package com.zhiyou100.api.list_test;

import java.util.*;

public class Demo2 {

    public static void main(String[] args) {
        test5();
    }


    public static void test5() {
//        模拟使用map进行学生信息存储，key值是学生的学号，
//        value值是对应学生的信息，并尝试根据学号查询学生的信息以及对信息进行修改，
//        并根据学号对学生进行升序排列。
        Student student = new Student("jack", "2020123456", 20, "男");
        Student student2 = new Student("rose", "2020123455", 19, "女");
        Student student3 = new Student("lucy", "2020123454", 21, "女");
        Student student4 = new Student("tom", "2020123457", 25, "男");
        Map<String, Student> studentMap = new HashMap<>();
        studentMap.put(student.getNum(), student);
        studentMap.put(student2.getNum(), student2);
        studentMap.put(student3.getNum(), student3);
        studentMap.put(student4.getNum(), student4);
        //根据学号获取学生信息
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入学号：");
        String num = scanner.next();
        if (studentMap.containsKey(num)) {
            Student stu = studentMap.get(num);
            System.out.println("stu = " + stu);
        }else {
            System.out.println("查询的学生不存在......");
        }
        System.out.println("请输入要求的学生学号：");
        num = scanner.next();
        if (studentMap.containsKey(num)) {
            System.out.println("请输入修改数据：");
            Student stu = studentMap.get(num);
            stu.setName("JACK");
            //获取使用put方法修改
        }else {
            System.out.println("学生不存在......");
        }
        //并根据学号对学生进行升序排列。    先获取key值列表（set）   对key值列表进行排序，再根据排序好后的key获取value

    }


    public static void test4() {
        /**
         * 双色球规则：双色球每注投注号码由6个红色球号码和1个蓝色球号码组成。
         * 红色球号码从1—33中选择；蓝色球号码从1—16中选择；
         * 请随机生成一注双色球号码。（要求同色号码不重复）
         */
        //创建list集合，将号码存入集合中
        List<Integer> list = new ArrayList<>();
        //随机生成号码
        int i = (int) (Math.random() * 33 + 1);
        while (list.size() < 7) {
            //判断当前有几个红色号码以及此号码是否已经存在
            if (list.size() < 6 && !list.contains(i)) {
                //随机红色球号码
                list.add(i);
                i = (int) (Math.random() * 33 + 1);
            }
            if (list.size() == 6) {
                //随机蓝色球号码
                int j = (int) (Math.random() * 16 + 1);
                list.add(j);
            }
        }
        System.out.println(list);


    }


    public static void test3() {
        Blog blog = new Blog(1, "Java基础", "xxxxxxxxxxx", "计算机类", 200);
        Blog blog2 = new Blog(2, "Map集合使用", "xxxxxxxxxxx", "开发类", 100);
        Blog blog3 = new Blog(3, "List集合使用", "xxxxxxxxxxx", "计算机类", 111);
        Blog blog4 = new Blog(4, "常用数据结构", "xxxxxxxxxxx", "数据结构", 123);
        List<Blog> blogList = Arrays.asList(blog, blog2, blog3, blog4);
        Scanner scanner = new Scanner(System.in);
//        根据博客类别查询博客信息
        System.out.println("请输入博客类别");
        String category = scanner.next();
        List<Blog> blogs = new ArrayList<>(); //用于保存同类别的博客信息
        for (Blog blog1 : blogList) {
            if (blog1.getCategory().equals(category)) {
                blogs.add(blog1);
            }
        }
        System.out.println("blogs = " + blogs);
//        根据点赞数量获取排名前三的博客信息
        blogList.sort(new Comparator<Blog>() {
            @Override
            public int compare(Blog o1, Blog o2) {
                return o2.getLike_num() - o1.getLike_num();
            }
        });
        System.out.println("blogList = " + blogList);


    }


    //自定义方法实现返回集合指定元素首次出现的索引位置
    public static void test2() {
        List<Integer> list = Arrays.asList(12, 56, 78, 98, 45, 78, 656);
        int i = list.indexOf(12);
    }


    //使用Scanner录入一行数据，使用集合进行保存并统计指定元素出现次数
    public static void test() {
        System.out.println("请输入一行数据");
        Scanner scanner = new Scanner(System.in);
        //获取一行数据   asdjkashdjkaskdhas
        String s = scanner.next();
        //定义集合，保存一行数据中的每个元素
        List<Character> list = new ArrayList<>();
        for (int i = 0; i < s.length(); i++) {
            list.add(s.charAt(i));
        }
        //根据用户输入的指定元素，统计在list集合中出现的次数   这个指定元素要求是字符
        System.out.println("请输入指定元素：");
        String next = scanner.next();
        char c = next.charAt(0);
        //遍历list集合，判断c 出现的次数
        int count = 0;   //计算器
        for (Character c2 : list) {
            if (c2.equals(c)) {
                count++;
            }
        }
        System.out.println("指定元素：" + c + "出现的次数为：" + count);
        scanner.close();
    }

}
